package com.example.behaviorpattern.visitor;

import java.util.ArrayList;
import java.util.List;

/**
 * 对象结构
 * 只负责对象的添加和删除,将访问的能力交由元素去执行
 * @author yaojianfeng
 */
public class ObjectStructure {
    private final List<Element> elements = new ArrayList<>();

    public void attach(Element element) {
        elements.add(element);
    }

    public void detach(Element element) {
        elements.remove(element);
    }

    /**
     * 遍历所有元素,并调用accept方法,传入visitor
     * @param visitor    访问者
     */
    public void visitElements(Visitor visitor) {
        for (Element element : elements) {
            element.accept(visitor);
        }
    }
}